home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 84 / 64er_Magazin_Sonderheft_84_19xx_Markt__Technik_de_Side_A.d64 / modulgen. v2.0 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  8KB  |  249 lines

  1. 1 rem *** modulgenerator ***
  2. 2 rem 1987 by ruediger stahl
  3. 3 rem *** tiny  eprommer ***
  4. 9 :
  5. 10 poke46,38:poke45,0:rem v.anf.
  6. 15 poke56,48:poke55,00:poke52,48:poke51,00:clr
  7. 20 m$=" bitte waehlen:":ei=16
  8. 30 ifpeek(49152)=32andpeek(49400)=169then50
  9. 40 print"[147] modulgenerator v2.0
  10. 41 [153]" by ruediger stahl":[153]" hurtenstr. 20"
  11. 42 [153]" 8138 frieding-andechs 1987
  12. 45 :load"ma.tiny eprommer",8,1
  13. 50 lm=49152:dr=49296:bl=49464:bs=49514:cl=49716
  14. 55 sys49768
  15. 100 poke53280,5:poke53281,0:poke650,0
  16. 110 syscl:print"[153]>>> tiny eprommer modulgenerator v2.0<<<";
  17. 120 print"----------------------------------------
  18. 130 [153]" bitte waehlen:
  19. 140 printtab(4)"'f1' = hauptmenue
  20. 145 [153][163]4)"'f3' = modulgenerator fuer
  21. 146 printtab(11)"ein programm
  22. 150 [153][163]4)"'f5' = modulgenerator fuer mehrere
  23. 151 printtab(11)"programme mit menueauswahl
  24. 155 [153][163]4)"'f7' = files/direktory
  25. 160 printtab(4)"'f2' = einschaltmeldung fuer modul-
  26. 161 [153][163]11)"programme mit menueauswahl
  27. 162 printtab(11)"aendern
  28. 165 [153][163]4)"'f4' = programm beenden
  29. 200 print"----------------------------------------";
  30. 210 print">>> modulgenerator v2.0 (8k/s.32768) <<[157]"chr$(148)"<";
  31. 260 geta$:ifa$=""then260
  32. 275 a=asc(a$):ifa<133ora>138then260
  33. 280 syscl:ona-132gosub1000,2200,2300,3000,2600,4000
  34. 390 goto100
  35. 999 rem untermenues
  36. 1000 print" hauptmenue wird nachgeladen
  37. 1010 [141]50050:[139]a$[178]"n"[167][142]
  38. 1020 [158]49816:[151]45,255:[151]46,46:[147]"tiny eprommer",8
  39. 2000 :
  40. 2010 [142]
  41. 2200 [153]"modulstartgenerator fuer ein programm"
  42. 2210 [140]:ad[178]32768:en[178]40960
  43. 2215 [135]a:[139]a[179]0[167]2220
  44. 2216 [151]ad,a:ad[178]ad[170]1:[137]2215
  45. 2220 z[178]ad[170]5:[141]2400:[141]2500
  46. 2221 [139]en[179]z[176]a[179][177]64[167]2000
  47. 2222 a[178]z:[158]49848,a[170]1,40960,255:[141]50500
  48. 2225 [151]ad[170]1,z[173]256:[151]ad,z[171][194](ad[170]1)[172]256
  49. 2226 [151]ad[170]3,an[173]256:[151]ad[170]2,an[171][194](ad[170]3)[172]256
  50. 2227 [151]ad[170]4,mo
  51. 2230 [158]cl
  52. 2240 [153]"programm steht von"
  53. 2245 [153]" $8000 bis $";a$;" im speicher"
  54. 2250 [141]50010
  55. 2260 [142]
  56. 2300 [153]"modulstartgenerator fuer mehrere pro-
  57. 2310 print"gramme
  58. 2315 [140]:ad[178]32768:en[178]40958:nu[178]0
  59. 2316 [135]a:[139]a[177][171]1[167]2316
  60. 2317 [135]a:[139]a[179]0[167]2320
  61. 2318 [151]ad,a:ad[178]ad[170]1:[137]2317
  62. 2320 [129]a[178]0[164][195](m$)[171]1:[151]ad[170]a,[198]([202](m$,a[170]1,1)[170]" "):[130]:[151]ad[170]a,0
  63. 2321 ad[178]ad[170]a[170]1
  64. 2325 [158]cl:z[178]ad[170]5:nu[178]nu[170]1:[141]2400
  65. 2326 [153]"programm nummer"nu":"
  66. 2327 [153]" name, unter dem das progrmm im menue
  67. 2328 print" erscheinen soll:"
  68. 2329 print"          ";nu-1;"[157]. ";:ei=25:gosub50100
  69. 2330 ifa$="$"thensysdr:gosub50010:syscl:goto2326
  70. 2331 fora=1tolen(a$):pokez+a-1,asc(mid$(a$,a,1)+" "):next:pokez+a-1,0
  71. 2333 z=z+a:ifz>enthenpokead,0:pokead+1,0:print"speicher voll":goto2385
  72. 2334 syscl:gosub2400
  73. 2335 gosub2500
  74. 2336 ifz>enora<>64then2385
  75. 2340 pokead+1,z/256:pokead,z-peek(ad+1)*256
  76. 2341 pokead+3,an/256:pokead+2,an-peek(ad+3)*256
  77. 2342 pokead+4,mo
  78. 2345 pokez,0:pokez+1,0
  79. 2350 print"routine mit header steht von
  80. 2355 a[178]ad:[141]50500:[153]"$"a$" bis $";
  81. 2360 a[178]z[170]1:[141]50500:[153]a$" im speicher.
  82. 2380 ad=z:nu=nu+1:rem bei error 2385
  83. 2385 z=ad:nu=nu-1:print"noch ein prohramm ? (j/n)":gosub2400
  84. 2390 geta$:ifa$<>"j"anda$<>"n"then2390
  85. 2395 ifa$="j"then2325
  86. 2396 syscl:print"das gesamte modulstartprogramm liegt
  87. 2397 a[178]z[170]1:[158]49848,a[170]1,40960,255:[141]50500
  88. 2398 [153]"in dem bereich von $8000 bis $"a$".
  89. 2399 gosub50010:return
  90. 2400 a=en-z:gosub50500:print"maximale programmlaenge: $"a$" bytes.
  91. 2410 [153]"(entspricht ca."[181]((en[171]z)[173]256)"blocks)
  92. 2420 return
  93. 2500 print" bitte programmtyp waehlen:
  94. 2501 t$(0)[178]"      programm mit basicstart      "
  95. 2502 t$(1)[178]"    maschinenprogramm (jmp ...)    "
  96. 2503 t$(2)[178]"maschinenprogr. subrout. (jsr ...) "
  97. 2504 t$(3)[178]"daten nur transverieren, ohne start"
  98. 2505 t$(4)[178]"   menuepunkt: zu basic springen   "
  99. 2506 [153]" (mit crsr-tasten und return)
  100. 2510 ifmo>4thenmo=0
  101. 2511 ifmo<0thenmo=4
  102. 2512 print""
  103. 2515 fora=0to4:ifa=mothenprint"";
  104. 2516 print" ";t$(a);"  ":next
  105. 2520 geta$:ifa$<>""anda$<>"[145]"anda$<>chr$(13)then2520
  106. 2521 ifa$="[145]"thenmo=mo-1:goto2510
  107. 2522 ifa$=""thenmo=mo+1:goto2510
  108. 2530 :
  109. 2535 syscl:ifmo<4then2540
  110. 2536 an=673:pokez,76:pokez+1,157:pokez+2,227:z=z+3
  111. 2537 ifen<zthenprint" programm zu lang !"
  112. 2538 mo=1:a=64:goto2590
  113. 2540 print"filename: ";:gosub50100
  114. 2545 n$=a$
  115. 2550 print"geraeteadresse: 8_[157]";:a$="8":gosub50120
  116. 2555 g=val(a$):ifg>15then2550
  117. 2556 ifg=8andn$="$"thensysdr:gosub50010:goto2535
  118. 2560 open1,g,0,n$
  119. 2561 get#1,a$:an=asc(a$+chr$(0)):get#1,a$:an=an+asc(a$+chr$(0))*256
  120. 2562 close1
  121. 2565 sysbl,n$,g,z
  122. 2570 z=peek(781)+peek(782)*256
  123. 2575 :
  124. 2580 ifz>enthenprint"programm zu lang !"
  125. 2585 a=st:gosub50600
  126. 2586 gosub50010
  127. 2590 :
  128. 2595 ifmo=0thenan=2049
  129. 2599 return
  130. 2600 print"einschaltmeldung veraendern:
  131. 2605 [153][163]6)"'f1' = zurueck
  132. 2610 printtab(6)"'del'= zeichen zuruecknehmen
  133. 2615 [141]50010
  134. 2620 [141]2650
  135. 2621 [161]a$:[139]a$[178]""[167]2621
  136. 2622 [139]a$[178]"input"[167][142]
  137. 2623 [139]a$[178][199](20)[167]m$[178][200](m$,[182]([195](m$)[171]1)):[137]2620
  138. 2624 [139][195](m$)[177]254[167]m$[178][200](m$,254)
  139. 2625 m$[178]m$[170]a$:[137]2620
  140. 2650 [153]"load      *** commodore 64 basic v2 ***
  141. 2655 print" 64k ram system  38911 basic bytes free
  142. 2660 [153]m$;"_"
  143. 2665 [153]"           1. xxxxxxxxx
  144. 2670 return
  145. 3000 syscl
  146. 3015 print" bitte waehlen:"
  147. 3020 printtab(6)"'f1' = zurueck
  148. 3025 [153][163]6)"'f3' = direktory
  149. 3030 printtab(6)"'f5' = fehlerkanal
  150. 3035 [153][163]6)"'f7' = save                  close
  151. 3040 printtab(6)"'f2' = floppy-befehl         [160]
  152. 3050 [161]a$:[139]a$[178]""[167]3050
  153. 3055 a[178][198](a$):[139]a[179]133[176]a[177]137[167]3050
  154. 3060 [158]cl
  155. 3065 [145]a[171]132[137] 3100,3200,3300,3400,3500
  156. 3100 [142]
  157. 3200 [158]dr
  158. 3210 [141]50010:[137]3000
  159. 3300 [141]50600:[141]50010:[137]3000
  160. 3400 [153]"speicherbereich absaven:
  161. 3410 print"filename:";:gosub50100:ifa$=""then3000
  162. 3415 n$=a$
  163. 3420 a$="8":print"geraeteadresse:8_[157]";:gosub50120
  164. 3430 g=val(a$):ifg>15thenprint"[145][145][145]":goto3420
  165. 3440 a$="8000":print"startadresse:";a$;"_[157]";:gosub50120
  166. 3445 gosub50400:b=a
  167. 3450 a$="9fff":print"endadresse  :";a$;"_[157]";:gosub50120
  168. 3455 gosub50400
  169. 3456 a=a+1:ifa>65535thena=65535:print"letztes byte geht verlohren"
  170. 3460 gosub50050:ifa$="n"then3000
  171. 3470 sysbs,n$,g,b,a
  172. 3475 ifst<>0thenprint" i/o-error":gosub50010
  173. 3480 goto3000
  174. 3500 ei=25:print"floppy-befehl:";
  175. 3510 gosub50100:open1,8,15,a$:close1
  176. 3520 gosub50600:gosub50010:goto3000
  177. 4000 print"programm verlassen
  178. 4010 [141]50050:[139]a$[178]"n"[167][142]
  179. 4020 [128]:[138]
  180. 50000 :
  181. 50010 [151]198,0
  182. 50015 [139][194](214)[177]21[167][153]""
  183. 50020 [153]:[153]"        t a s t e   d r u e c k e n    "
  184. 50030 [146]198,1,0:[151]198,0:[142]
  185. 50050 :
  186. 50060 [151]198,0
  187. 50070 [153]:[153]"   a l l e s   oclosek aclosey   (j/n)  ?      wait"
  188. 50075 [146]198,1,0:[161]a$
  189. 50080 [139]a$[179][177]"j"[175]a$[179][177]"n"[175]a$[179][177]"_"[167]50075
  190. 50085 [142]
  191. 50100 a$[178]"":[153]"_cmd";
  192. 50120 [161]b$:[139]b$[179][177]""[167]50130
  193. 50122 [153]"_waitcmd";:[129]a[178]0[164]80:[130]
  194. 50125 [161]b$:[139]b$[179][177]""[167]50130
  195. 50127 [153]"_cmd";:[129]a[178]0[164]80:[130]:[137]50120
  196. 50130 [139][198](b$)[178]13[167][153]"_":ei[178]16:[142]
  197. 50140 [139][198](b$)[177]31[175][198](b$)[179]128[167]50200
  198. 50150 [139][198](b$)[177]161[167]50200
  199. 50160 [139]b$[179][177][199](20)[175]b$[179][177]"cmd"[167]50120
  200. 50170 [139][195](a$)[179]1[167]50120
  201. 50180 a$[178][200](a$,[195](a$)[171]1)
  202. 50190 [153]" cmdcmd_cmd";
  203. 50195 [137]50120
  204. 50200 [139][195](a$)[179]ei[167]50300
  205. 50210 [153]" cmdcmd";
  206. 50220 a$[178][200](a$,[195](a$)[171]1)
  207. 50300 a$[178]a$[170]b$:[153]b$;"_cmd";:[137]50120
  208. 50400 a[178][171]1:[139][195](a$)[177]4[176][195](a$)[179]1[167][142]
  209. 50420 [129]x[178]1[164][195](a$)
  210. 50430 z[178][198]([202](a$,x,1))
  211. 50440 [139]47[179]z[175]z[179]58[167]z[178]z[171]48:[137]50470
  212. 50450 [139]z[179]65[176]z[177]71[167]a[178][171]1:x[178]4:[130]:[142]
  213. 50460 z[178]z[171]55
  214. 50470 a[178]a[170]z[172]16[174]([195](a$)[171]x)
  215. 50490 [130]:a[178]a[170]1:[142]
  216. 50500 a$[178]"":[129]x[178]3[164]0[169][171]1:w[178][181](a[173]16[174]x)
  217. 50520 a[178]a[171]w[172]16[174]x:[139]w[177]9[167]w[178]w[170]7
  218. 50530 a$[178]a$[170][199](w[170]48)
  219. 50540 [130]:[142]
  220. 50600 [159]1,8,15:[153]"disk-status: ";
  221. 50610 [161]#1,a$:[153]a$;:[139](st [175]64)[178]0[167]50610
  222. 50630 [160]1:[142]
  223. 60000 [143] m. routinen
  224. 61000 [131]10,128,94,254,195,194,205,56,48,0,142,22,208,32,163,253,32,80,253,32
  225. 61001 [131]21,253,32,91,255,32,83,228,32,191,227,32,34,228,162,251,154,160,4,185
  226. 61002 [131]138,128,153,247,0,136,16,247,166,249,164,250,134,252,132,253,162,143
  227. 61003 [131]160,128,134,176,132,177,160,0,177,176,145,249,230,176,208,2,230,177
  228. 61004 [131]230,249,208,2,230,250,165,176,197,247,165,177,229,248,144,230,166,251
  229. 61005 [131]240,9,202,240,30,202,240,30,202,240,30,169,8,141,2,8,32,51,165,166
  230. 61006 [131]249,164,250,134,45,132,46,169,0,32,113,168,76,174,167,108,252,0,32
  231. 61007 [131]129,128,76,157,227,-1
  232. 62000 [131]10,128,94,254,195,194,205,56,48,0,142,22,208,32,163,253,32,80,253,32
  233. 62001 [131]21,253,32,91,255,32,83,228,32,191,227,169,0,141,17,208,32,34,228,162
  234. 62002 [131]251,154,160,0,185,31,129,240,6,32,210,255,200,208,245,200,152,24,105
  235. 62003 [131]31,133,180,169,129,105,0,133,181,162,0,32,249,128,240,39,169,10,133
  236. 62004 [131]211,230,214,134,173,32,108,229,166,173,138,105,47,32,210,255,169,46
  237. 62005 [131]32,210,255,230,211,232,160,5,177,176,240,218,32,210,255,200,208,246
  238. 62006 [131]134,173,169,27,141,17,208,32,228,255,56,233,48,144,248,197,173,176
  239. 62007 [131]244,170,32,249,128,160,0,177,176,153,247,0,200,192,5,208,246,165,249
  240. 62008 [131]133,252,165,250,133,253,200,177,176,208,251,200,152,24,101,176,133
  241. 62009 [131]176,165,177,105,0,133,177,160,0,177,176,145,249,230,176,208,2,230,177
  242. 62010 [131]230,249,208,2,230,250,165,176,197,247,165,177,229,248,144,230,166,251
  243. 62011 [131]240,9,202,240,30,202,240,30,202,240,30,169,8,141,2,8,32,51,165,166
  244. 62012 [131]249,164,250,134,45,132,46,169,0,32,113,168,76,174,167,108,252,0,32
  245. 62013 [131]240,128,76,31,128,134,172,162,0,165,180,133,176,165,181,133,177,160
  246. 62014 [131]1,177,176,240,16,228,172,240,12,72,136,177,176,133,176,104,133,177
  247. 62015 [131]232,208,234,166,172,168,96,-1
  248. 63000 [143] *** ende ***
  249.